(X_train, y_train), (X_test, y_test) = mnist.load_data()
num_train_images = X_train.shape[0]
num_test_images = X_test.shape[0]
image_height = X_train.shape[1]
image_width = X_train.shape [2]

X_train = X_train.reshape(num_train_images,image_height*image_width)  
X_test = X_test.reshape(num_test_images,image_height*image_width)
X_train = X_train/255
X_test = X_test/255

model3D = Sequential() 
model3D.add(Dense(64, input_dim=image_height*image_width, activation='relu'))
model3D.add(Dense(3,activation='relu'))
model3D.add(Dense(64,activation='relu'))
model3D.add(Dense(image_height*image_width, activation='relu'))
model3D.summary()

model3D.compile(loss='mean_squared_error', optimizer='adam',metrics=['accuracy'])
model3D.fit(X_train, X_train, validation_data=(X_test, X_test),epochs=20,
            batch_size=512, verbose=0)
